package org.example.seata.common.core.holder;

/**
 * 租户持有者
 * <p>
 * 前端如何获取租户信息
 * <p>
 * 首先后台设置一张前端使用场景与租户的关联表
 * 例如：
 * 1、前端是小程序调用 后台appId关联租户id
 * 2、前端是pc门户网站 域名关联租户id
 * 3、前端是综合管理系统（即一个域名或一个小程序） 前端登录时必须手动选择租户
 * 系统自己去实现如何获取租户id
 *
 * @author hzq
 * @date 2021/9/11 9:13
 */
public class TenantHolder {

    private static final ThreadLocal<Integer> THREAD_LOCAL = new InheritableThreadLocal<>();

    public static Integer get() {
        return THREAD_LOCAL.get();
    }

    public static void set(Integer tenantId) {
        THREAD_LOCAL.set(tenantId);
    }

    public static void remove() {
        THREAD_LOCAL.remove();
    }
}
